export const getInputs = () => [[['eat', 'tea', 'tan', 'ate', 'nat', 'bat']], [['']], [['a']]];

/**
 * **[49. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/)**
 *
 * 给你一个字符串数组，请你将 **字母异位词** 组合在一起。可以按任意顺序返回结果列表。
 * **字母异位词** 是由重新排列源单词的字母得到的一个新单词，所有源单词中的字母通常恰好只用一次。
 *
 * @param strs
 */
export default function (strs: string[]): string[][] {
	const computeWordRoot = (str: string) => str.split('').sort().join('');
	const map = new Map<string, string[]>();

	for (const str of strs) {
		const root = computeWordRoot(str);
		const arr = map.get(root);
		!arr ? map.set(root, [str]) : arr.push(str);
	}

	const res: string[][] = [];
	map.forEach((arr) => {
		res.push(arr);
	});
	return res;
}
